package com.itany.corejava.code07_面向对象.bms;

/**
 * @author: 石小俊
 * @date: 2023年03月09日 16:58
 * @version: 1.0
 */
public class Bank {

    // 存储所有的账户,默认初始给100个
    static Account[] accounts = new Account[100];
    // 用于表示当前账户的总数
    // 即:当前数组中下一个存放数据的元素下标
    static int count = 0;

    /**
     * 开户
     * @param account 需要开户的账户信息
     * @return 是否开户成功
     */
    public static boolean register(Account account) {
        // 由银行生成账户的编号
        // 当前已开户的账户数量不能超出可以存放的数量
        if (count < accounts.length) {
            accounts[count++] = account;
            return true;
        }
        return false;
    }

    /**
     * 账户登录
     * @param id       账户编号
     * @param password 账户密码
     * @return 对应的账户信息
     */
    public static Account login(int id, String password) {
        // 查询数组中所有账户信息,是否存在对应的编号与密码
        for (int i = 0; i < count; i++) {
            Account account = accounts[i];
            if (account.getId() == id && password.equals(account.getPassword())) {
                // 如果账户编号与密码均相等,则找到了对应的账户
                return account;
            }
        }
        // 如果数组中没有找到对应账户,则返回null,说明登录失败
        return null;
    }

    /**
     * 根据账户编号查询对应的账户信息
     * @param id
     * @return
     */
    public static Account findById(int id){
        for(int i = 0; i < count; i++){
            if(accounts[i].getId() == id){
                return accounts[i];
            }
        }
        return null;
    }
}
